ASP.NET Core Identity ব্যবহার করে Authentication ইমপ্লিমেন্ট করা

Microsoft Technologies - এএসপি ডট নেট কোর (ASP.Net Core) ASP.NET Core Authentication এবং Authorization |
297
297

ASP.NET Core Identity একটি শক্তিশালী লাইব্রেরি যা ASP.NET Core অ্যাপ্লিকেশনগুলিতে ব্যবহারকারীর অথেনটিকেশন এবং অথোরাইজেশন ব্যবস্থা পরিচালনা করার জন্য ব্যবহৃত হয়। এটি ব্যবহারকারীর লগইন, লগআউট, রেজিস্ট্রেশন, পাসওয়ার্ড রিসেট এবং অন্যান্য সিকিউরিটি ফিচার পরিচালনা করার জন্য অনেকগুলি বিল্ট-ইন ফিচার প্রদান করে।

এই টিউটোরিয়ালে আমরা ASP.NET Core Identity ব্যবহার করে Authentication কিভাবে ইমপ্লিমেন্ট করতে হয় তা দেখবো।


ASP.NET Core Identity কী?

ASP.NET Core Identity হলো একটি পূর্ণাঙ্গ অথেনটিকেশন এবং অথোরাইজেশন সিস্টেম যা ব্যবহারকারীর রেজিস্ট্রেশন, লগইন, পাসওয়ার্ড ম্যানেজমেন্ট এবং আরও অনেক ফিচার সরবরাহ করে। এটি আপনাকে টোকেন-ভিত্তিক অথেনটিকেশন, কুকি-বেসড অথেনটিকেশন, এবং Identity Provider Integration (OAuth, OpenID Connect) ইত্যাদি ফিচার ইমপ্লিমেন্ট করতে সহায়তা করে।


ASP.NET Core Identity কনফিগারেশন

ASP.NET Core Identity কনফিগার করতে হলে কিছু নির্দিষ্ট পদক্ষেপ অনুসরণ করতে হয়। এখানে আমরা একটি সাধারণ অ্যাপ্লিকেশনে Identity সিস্টেম কনফিগার করবো।


1. ASP.NET Core Identity প্যাকেজ ইন্সটল করা

প্রথমে আপনার ASP.NET Core প্রজেক্টে Identity প্যাকেজ ইনস্টল করতে হবে।

NuGet Package Manager ব্যবহার করে:

Install-Package Microsoft.AspNetCore.Identity.EntityFrameworkCore

CLI ব্যবহার করে:

dotnet add package Microsoft.AspNetCore.Identity.EntityFrameworkCore

2. DbContext কনফিগার করা

Identity সিস্টেম ব্যবহার করতে হলে DbContext কনফিগার করতে হবে যাতে Identity ডেটাবেসে সংরক্ষণ করতে পারে। এটি সাধারণত ApplicationDbContext নামক একটি ক্লাস হিসেবে থাকে, যা IdentityDbContext ক্লাস থেকে উত্তরাধিকারী।

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    {
    }
}

এখানে ApplicationUser হচ্ছে একটি কাস্টম ইউজার ক্লাস, যেটি IdentityUser থেকে উত্তরাধিকারী হতে পারে। আপনি যদি কাস্টম ইউজার প্রোপার্টি চান, তবে এই ক্লাসে নতুন প্রোপার্টি যোগ করতে পারেন।

public class ApplicationUser : IdentityUser
{
    public string FullName { get; set; }
}

3. Startup.cs বা Program.cs ফাইলে Identity কনফিগার করা

ASP.NET Core Identity কনফিগার করার জন্য Startup.cs বা Program.cs ফাইলে সেবা রেজিস্টার এবং কনফিগার করতে হবে। এটি Identity এবং DbContext-কে পরিষেবা হিসাবে রেজিস্টার করবে।

Program.cs ফাইলে কনফিগারেশন:

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
}

Startup.cs ফাইলের কনফিগারেশন:

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

        // Identity Service রেজিস্টার করা
        services.AddIdentity<ApplicationUser, IdentityRole>()
            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultUI()
            .AddDefaultTokenProviders();

        services.AddControllersWithViews();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseRouting();

        app.UseAuthentication(); // Authentication Middleware যোগ করা
        app.UseAuthorization(); // Authorization Middleware যোগ করা

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
            endpoints.MapRazorPages(); // Identity Razor Pages
        });
    }
}

4. Identity UI এর সাথে কাজ করা

ASP.NET Core Identity UI কে আপনার অ্যাপ্লিকেশনে যোগ করতে চাইলে আপনাকে Razor Pages ব্যবহার করতে হবে। আপনি Identity UI প্যাকেজ ব্যবহার করতে পারেন।

Identity UI প্যাকেজ ইন্সটল করতে:

dotnet add package Microsoft.AspNetCore.Identity.UI

এটি রেজিস্ট্রেশন, লগইন, লগআউট, পাসওয়ার্ড পরিবর্তন, ইমেইল ভেরিফিকেশন ইত্যাদি সম্পন্ন করার জন্য প্রয়োজনীয় Razor Pages প্রদান করে।


5. রেজিস্ট্রেশন এবং লগইন ফিচার

ASP.NET Core Identity রেজিস্ট্রেশন এবং লগইন সিস্টেমটি প্রি-বিল্ট Razor Pages এবং কন্ট্রোলার সহ আসে। আপনি যদি UI ব্যবহার না করেন এবং নিজস্ব কাস্টম UI তৈরি করতে চান, তবে আপনি IdentityManager API এর মাধ্যমে ইউজার তৈরি এবং লগইন করতে পারেন।

৫.১ রেজিস্ট্রেশন Controller:

public class AccountController : Controller
{
    private readonly UserManager<ApplicationUser> _userManager;
    private readonly SignInManager<ApplicationUser> _signInManager;

    public AccountController(UserManager<ApplicationUser> userManager, SignInManager<ApplicationUser> signInManager)
    {
        _userManager = userManager;
        _signInManager = signInManager;
    }

    // Register Action
    [HttpPost]
    public async Task<IActionResult> Register(RegisterViewModel model)
    {
        if (ModelState.IsValid)
        {
            var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
            var result = await _userManager.CreateAsync(user, model.Password);

            if (result.Succeeded)
            {
                await _signInManager.SignInAsync(user, isPersistent: false);
                return RedirectToAction("Index", "Home");
            }
            foreach (var error in result.Errors)
            {
                ModelState.AddModelError(string.Empty, error.Description);
            }
        }
        return View(model);
    }
}

৫.২ লগইন Controller:

public class AccountController : Controller
{
    private readonly SignInManager<ApplicationUser> _signInManager;

    public AccountController(SignInManager<ApplicationUser> signInManager)
    {
        _signInManager = signInManager;
    }

    // Login Action
    [HttpPost]
    public async Task<IActionResult> Login(LoginViewModel model)
    {
        if (ModelState.IsValid)
        {
            var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: false);
            
            if (result.Succeeded)
            {
                return RedirectToAction("Index", "Home");
            }
            else
            {
                ModelState.AddModelError(string.Empty, "Invalid login attempt.");
            }
        }
        return View(model);
    }
}

সারাংশ

ASP.NET Core Identity ব্যবহার করে অ্যাপ্লিকেশনে শক্তিশালী অথেনটিকেশন সিস্টেম ইমপ্লিমেন্ট করা সম্ভব। Identity আপনার অ্যাপ্লিকেশনে ইউজার রেজিস্ট্রেশন, লগইন, লগআউট, পাসওয়ার্ড পরিবর্তন এবং নিরাপত্তা ব্যবস্থা পরিচালনা করতে সহায়তা করে। আপনি কাস্টম UI তৈরি করতে পারেন বা Identity UI প্যাকেজ ব্যবহার করে প্রি-বিল্ট UI ফিচার পেতে পারেন। ASP.NET Core Identity এর মাধ্যমে সিকিউরিটি ফিচার ইমপ্লিমেন্ট করা সহজ এবং নিরাপদ।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion